% 变量顺序： C3, C2, C1, A3, A2, A1
x0 = [2, 2, 2, 0.5, -2, 1];  % 初始猜测
opts = optimoptions('fmincon','Algorithm','sqp','Display','iter','TolCon',1e-10);
f = @(x) max(x) - min(x);  % 目标：极差最小
x_opt = fmincon(f, x0, [],[], [],[], [],[], @mycons, opts);

C3=x_opt(1); C2=x_opt(2); C1=x_opt(3);
A3=x_opt(4); A2=x_opt(5); A1=x_opt(6);
d0 = 1 ;
d1 = C3*A3-3;
d2 = C3*C2*A2-2*C3*A3+3;
d3 = C3*C2*C1*A1-C3*C2*A2+C3*A3-1;
fprintf('  c3 = %05f;\n  c2 = %05f;\n  c1 = %05f;\n  a3 = %05f;\n  a2 = %05f;\n  a1 = %05f;\n  b1 = %05f;\n',C3,C2,C1,A3,A2,A1,(d0+d1+d2+d3)/(C1*C2*C3));
% disp(x_opt);

% 相等约束
function [c, ceq] = mycons(x)
  C3=x(1); C2=x(2); C1=x(3);
  A3=x(4); A2=x(5); A1=x(6);
  d0 = 1 ;
  d1 = C3*A3-3;
  d2 = C3*C2*A2-2*C3*A3+3;
  d3 = C3*C2*C1*A1-C3*C2*A2+C3*A3-1;
  d4 = 0 ;
  d5 = A1;
  d6 = A2;
  ceq = [
         d0 - (1.0000);
         d1 - (-1.0116);
         d2 - (0.6072 );
         d3 - (-0.1130) ;
         d4 - (0      ) ;
         d5 - (0.2)     ;
         d6 - (0.3)     ;];
  c = [];
  % disp((d0+d1+d2+d3)/(C1*C2*C3));
end








